O procedimento abaixo percorre o caminho para baixar, limpar e organizar as decisões do Supremo Tribunal Federal sobre a ação de reclamação. Para realizar este procedimento, utilizou-se um conjunto de rotinas de computador. Esse conjunto de rotinas foi criado dentro da linguagem de programação estatística R. A cada uma das rotinas é dado um nome. Esses nomes são agrupados no aplicativo conhecido como package (pacote de funções) de uma determinada linguagem de programação. A esse pacote também é dado um nome, que no caso se chama stf. Uma vez incorporadas num aplicativo, as rotinas, doravante chamadas de funções, podem ser facilmente reutilizadas, bastando chamá-las pelo nome e informar os argumentos para sua execução dentro de parenteses.
O pacote construído a partir da presente pesquisa assegura replicabilidade e reproducibilidade. As pesquisas científicas atuais, especialmente as quantitativas, caminham no sentido de garantir a reproducibilidade, isto é, o caminho percorrido pelo pesquisador no processo de coleta, organização, exploração e análise dos dados, pode ser reproduzido por qualquer outro pesquisador que tenha familiaridade com o programa utilizado. Reproducibilidade significa usar os mesmos dados e a mesma análise (códigos e modelos) e chegar aos mesmos resultados. Replicabilidade significa aproveitar o mesmo método (código e análise) para aplicá-los a novos dados.
O R é uma linguagem de programação de código aberto e gratuita. Igualmente, o pacote stf, criado ao londo desta pesquisa, é livre acesso. Para acessá-lo, basta clicar no seguinte link. Ali se encontram as orientações sobre como utilizá-lo.
O pacote stf foi construído pensando não somente em viabilizar a presente pesquisa, mas também em oferecer a acadêmicos de direito, de estatística e de ciência da computação, ferramentas para condução de suas análises sobre a atuação do Supremo Tribunal Federal. Nesse sentido, entendemos que este é um valioso subproduto da presente pesquisa de doutorado.
install.packages(c("devtools","tidyverse","janitor","quanteda"))
devtools::install_github("jjesusfilho/stf")
library(stf)
library(tidyverse)
library(janitor)
O acervo de decisões do STF é composto por três grupos de decisões: monocráticas, correspondentes às decisões individuais dos ministros; colegiadas, correspondentes às decisões das turmas e do pleno; presidente, correspondentes as decisões do presidente. A função abaixo irá baixar todo o acervo de decisões do STF correspondente aos anos indicados e o tipo de decisão.
download_stf_collection(decision_type = "monocraticas",years = 2011:2018,dir = "monocraticas")
download_stf_collection(decision_type = "colegiadas",years = 2011:2018,dir = "colegiadas")
download_stf_collection(decision_type = "presidente",years = 2011:2018,dir = "presidente")
A função abaixo importa o acervo conforme a classe processuale os anos indicados. Esta função já faz o trabalho inicial de limpar a base de alguns elementos desnecessários e criar uma coluna chamada “incidente”, que é extraída do hyperlink.
monocraticas <- read_stf_collection(classes = "Rcl",years = 2011:2018,dir = "monocraticas")
colegiadas <- read_stf_collection(classes = "Rcl",years = 2011:2018,dir = "colegiadas")
presidente <- read_stf_collection(classes = "Rcl",years = 2011:2018,dir = "presidente")
Antes de seguir para os próximos passos, temos de juntar essas três bases e selecionar os processos únicos, de modo a reduzir o número de requisições de processos nos passos seguintes.
acervo <- bind_rows(monocraticas,colegiadas, presidente)
numeros <- unique(acervo$numero)
Os números revelam que houve 22532 reclamações julgadas pelo Supremo Tribunal Federal entre janeiro de 2011 e dezembro de 2018.
Para esta análise específica, somente algumas colunas são de interesse. O procedimento abaixo seleciona tais colunas.
acervo <- acervo %>%
select(classe,numero,data_autuacao,relator_atual,tipo_decisao,orgao_julgador,data_andamento)
A maneira mais rápida de baixar os processos seria por meio da coluna incidente. No entanto, notou-se que nem sempre o hiperlink, do qual é extraído o número do incidente, existe. Dessa forma, optou-se utilizar o número do processo na busca. A função abaixo realiza esta busca no portal do STF.
Esta busca poderá demorar bastante tempo porque são necessárias múltiplas requisições para cada um dos processos, correspondentes aos detalhes básicos que aparecem no topo das informações processuais e às oito abas.
Esta função irá criar nove pastas dentro do diretório indicado, correspondentes às oito abas mais a pasta com os detalhes (metadados). Veja que para baixar esses arquivos, é necessário ter lido o acervo antes, pois utilizaremos as colunas classe e número para baixá-los.
download_stf_dockets(classes = "Rcl",docket_number = numeros)
Das nove pastas, quatro delas são de especial interesse: detalhes, andamentos, partes e informações. Para a nossa análise, as demais são dispensáveis.
detalhes <- read_stf_details(path = "detalhes", plan = "multicore")
andamentos <- read_stf_docket_sheet(path = "andamentos", plan = "multicore")
informacoes <- read_stf_information(path = "informacoes", plan = "multicore")
partes <- read_stf_parties(path = "partes", plan = "multicore")
Conforme explicitado no desenho metodológico, a presente pesquisa visa analisar as decisões de mérito do Supremo Tribunal Federal em casos com trânsito em julgado sobre pedidos de reclamação contra órgãos jurisdicionais entre os anos de 2011 e 2018, com exceção daquelas que versam sobre a competência do STF. Para realizar esse filtro, é necessária a utilização tanto de automação, vez que são mais de 22 mil processos, como também de métodos manuais, para aqueles casos em que a automação não for suficiente para extrair as informações relevantes.
Sobre o uso de métodos automatizados de mineração e classificação de texto, observa-se que textos, nesse caso, decisões judiciais, são dados não estruturados. Com os avanços dos processos de automação na leitura e extração de dados, bem como, dos processos de classificação por meio do uso de inteligência artificial (deep learning), surgiram possibilidades de análise que antes não eram possíveis.
No entanto, o uso de computação para ler e classificar textos está longe de atingir a qualidade do processo humano. Como bem afirmam (Grimmer and Stewart 2013), os métodos quantitativos de classificação de texto ampliam a atividade humana, não a substituem. Além disso, não existe um método global de análise automatizada. Por fim, a classificação automatizada deve ser validada por meio de revisão humana. A técnica adotada é tirar uma amostra de algumas dezenas de casos e submeter à leitura humana para verificar se houve erros e, em caso afirmativo, se o número é muito grande.
Primeiramente iremos remover três grupos de casos. Aqueles que não transitaram em julgado no momento da análise, aqueles que correm em segredo de justiça e aqueles cujo reclamado não é órgão judicial. A informação sobre o trânsito em julgado se encontra no andamento. A informação sobre o segredo de justiça se encontra nos detalhes.
transitado <- andamentos %>%
filter(str_detect(titulo,"(?i)transitado")) %>%
pull("incidente") %>%
unique()
publico <- detalhes %>%
filter(!str_detect(sigilo,"Segredo de Justiça")) %>%
pull("incidente") %>%
unique()
Para manter somente os casos em que o reclamado é órgão judicial, utilizaremos a função classify_respondent() do pacote stf . Além de excluir os casos em que o respondente não é órgão judicial, ela classifica o órgão judicial conforme a instância e o segmento do Poder Judiciário ao qual pertence.
A classificação é bem sucedida na maioria dos casos, porém restaram algumas ambiguidades, relacionadas aos conselhos superiores dos tribunais de justiça, que ora decidem jurisdicionalmente, ora administrativamente.
partes <- stf::classify_respondent(partes)
remover_conselhos <- conselhos %>%
select(c(1,4,5)) %>%
slice(38:57) %>%
setNames(c("reclamados","incidente","acao")) %>%
filter(acao=="EXCLUIR")
remover_conselhos[2,1]<-"CONSELHO DA MAGISTRATURA DO TRIBUNAL DE JUSTIÇA DO ESTADO DO RIO GRANDE DO SUL"
partes <- partes %>%
dplyr::filter(!is.element(incidente,remover_conselhos$incidente),!is.element(reclamado,remover_conselhos$reclamados))
partes <- partes %>%
filter(instancia!="outros") %>%
filter(segmento!="outros")
Por fim, verificamos que na base andamentos há movimentações que foram invalidadas. A função de leitura dos andamentos cria uma coluna indicando se a movimentação foi invalidada ou não. O que temos de fazer é simplesmente remover tais linhas da base andamentos.
andamentos <- andamentos %>%
filter(!invalido)
Para baixar os textos das decisões, criamos duas funções, uma que baixa os textos em rtf, outra que baixa os textos em pdf. As urls dos textos estão contidas na base andamentos. Acontece que nem todos os textos se referem a decisões de mérito. Alguns são pareceres do Ministério Público, outros são meros despachos, outros são decisões interlocutórias ou apreciação de liminar ou cautelar. No entanto, a base andamento nem sempre é suficientemente informativa a respeito. Por essa razão, optamos por baixar todos os textos e, posteriormente, realizar as exclusões.
dir.create("textos_rtf")
dir.create("textos_pdf")
stf::download_stf_pdf(andamentos,"textos_pdf")
stf::download_stf_rtf(andamentos,"textos_rtf")
textos_rtf <- stf::read_stf_rtf("textos_rtf")
textos_pdf <- stf::read_stf_pdf("textos_pdf")
texto <- bind_rows(textos_rtf,textos_pdf)
Os textos das decisões são usados para identificar casos que devem ser excluídos. Por exemplo, processos em que não houve decisão de mérito, tais como decisões terminativas sem julgamento de mérito, processos extintos e prejudicados seja por inércia da parte, seja por perda do objeto.
Além disso, a decisão contida na base acervo nem sempre corresponde à real decisão sobre reclamação, pois os técnicos do STF simplesmente extraem a última decisão do andamento, a qual por vez é um mero despacho. Igualmente o título do andamento nem sempre são úteis. Por vezes, apenas indicava que se tratatava de uma publicação no diário de justiça.
Por essa razão, optou-se por extrair dos próprios textos a parte que corresponde à decisão, isto é, extraímos os últimos 800 caracteres do texto, que provavelmente contêm a decisão. Antes, porém, excluímos do texto as informações sobre quem assinou o documento.
Ademais, cortamos essa parte a partir de palavras chave tais como ex positis, diante do exposto etc. Com isso, foi possível verificar se a decisão se tratava de liminar ou cautelar, se era um mero despacho concedendo vista ou uma cerdidão. Algumas palavras no início do texto indicavam se ele era um parecer do MP, se era um embargo de declaração ou se era um agravo regimental. Quando não foi possível identificar no início, foi possível fazê-lo no final do texto.
Alguns embargos foram convertidos em agravo regimental. A identificação desses casos também foi necessária.
texto <- texto %>%
unite("docname",extensao,docid,sep="") %>%
inner_join(andamentos,by="docname")
texto <- texto %>%
mutate(caracteres=nchar(texto))
texto <- texto %>%
mutate(texto=str_remove_all(texto,"(?i)documento assinado\\X+?(sob|por)\\s\\w+"))
texto <- texto %>%
mutate(texto = str_squish(texto))
texto <- texto %>%
mutate(dispositivo = case_when(
caracteres > 800 ~{
stringi::stri_reverse(texto) %>%
stringi::stri_extract_first_regex("\\X{800}") %>%
stringi::stri_reverse()
},
TRUE ~ texto))
texto <- texto %>%
mutate(dispositivo=case_when(
str_detect(texto1,"(?i)(antes? o exposto|ex positis|diante disso|ante o quadro|pelo exposto|diante do exposto|nesse contexto|diante do contexto|por es[st]a razão|pelas razões expostas|por todo o exposto|dessa forma|decis.o:|com essas considerações|nessas condições|sendo assim|face ao exposto|do exposto)") ~{
str_extract(dispositivo,"(?i)(antes? o exposto|ex positis|diante disso|ante o quadro|pelo exposto|diante do exposto|nesse contexto|diante do contexto|por es[ts]a razão|pelas razões expostas|por todo o exposto|dessa forma|decis.o:|com essas considerações|nessas condições|sendo assim|face ao exposto|do exposto).+")
},
TRUE ~ dispositivo))
texto <- texto %>%
filter(!str_detect(dispositivo,"(?i)defiro a liminar"))
texto <- texto %>%
mutate(exclusoes = str_extract(texto,"\\X{80}")) %>%
# filter(!str_detect(cautelar,"MEDIDA CAUTELAR")) %>%
filter(!str_detect(exclusoes,"(?i)(^Documento|^MINISTÉRIO|^procurador)")) %>%
filter(!str_detect(exclusoes,"EMB.DECL.")) %>%
filter(!str_detect(doc,"(?i)(PGR|despacho|certid.o|vista)")|is.na(doc)) %>%
select(-exclusoes)
O procedimento abaixo classifica os textos das decisões conforme provimento ou improvimento. O trabalho aqui foi recortar as decisões que eram de mérito. Para tanto, aplicamos a técnica de expressões regulares (regex) para identificar padrões nos textos dos dispositivos.
Todo esse trabalho de identificação é heurístico e requer a conjunção de esforços de automação e validação pelo pesquisador. Uma técnica de processamento de linguagem natural muito útil é conhecida como “kwic” (key word in context). Por ela, buscamos uma palavra-chave, e.g., “procedente” em seu contexto, isto é, verificamos todas as vezes que esta palavra aparece no dispositivo e quais as palavras que a antecedem ou que a sucedem. Este procedimento permite observar padrões tais como “não procedente” ou “julgo procedente”. A experiência com classificações em outras pesquisas tem nos permitido reduzir significativamente as chances de erro.
Mesmo quando ocorrem alguns erros, esses são mínimos e podem ser verificados por outros meios, tais como a verificação da consistência da base. Por exemplo, um texto erroneamente classificado como decisão de agravo deve ser contrastado com o tipo de decisão. Se esta foi uma decisão monocrática, claramente não se trata de um agravo.
Por fim, uma particularidade do STF é o uso da expressão “nego seguimento” ora par indicar “improcedência”, ora para indicar uma decisão terminativa sem julgamento do mérito. Esse aspecto representou uma dificuldade a mais, pois foi necessário encontrar outras palavras que indicassem quando a expressão estava sendo usada para julgamento de mérito, e.g. “aderência” ou quando definitivamente não era de mérito, e.g, “súmula 734” ou “sucedâneo” e “atalho”.
Diante da dúvida se a decisão era de mérito ou não, preferiu-se excluí-la. Ao final, depois de todas as exclusões e aplicações de filtros, chegou-se a 5636 casos. Uma amostra foi retirada para realização de validação humana. Não foi identificado nenhum erro. Isso não signfica que a base está isenta de erros de classificação, mas a pesquisadora está segura de que se estes ocorreram, eles foram mínimos e não afetarão significativamente os resultados.
Ainda assim, a próxima etapa da análise, denominada “Exploratory Data Analysis” permite verificar inconsistências ou disparidades nas distribuições e anomalias nos dados. Novas correções são possíveis nesse momento.
texto <- texto %>%
dplyr::mutate(decisao = stringi::stri_trans_tolower(dispositivo),
decisao = abjutils::rm_accent(decisao),
decisao = case_when(
str_detect(decisao,"(nego|negado|negou)\\sseguimento") ~ "nego seguimento",
str_detect(decisao,"(desprov\\w+|improv\\w+|improced\\w+)") ~ "improvido",
str_detect(decisao,"(nao|nega\\w+)\\s+provi.*")~ "improvido",
str_detect(decisao,"(rejeit\\w+|inadmitidos?)") ~ "improvido",
str_detect(decisao,"mantiveram") ~ "improvido",
str_detect(decisao,"(acolho|acolhido)") ~ "provido",
str_detect(decisao,"(deram|da\\-*\\s*se|dando\\-*(se)*|comporta|dou|confere\\-se|se\\s*\\-*da|merece)\\sprovi\\w+") ~ "provido",
str_detect(decisao,"parcial\\w*\\sprovimento") ~ "provido",
str_detect(decisao,"(nao\\sderam|nao\\smerece|se\\snega|nega\\-*\\s*se|negar\\-*\\s*lhe|nao\\scomporta|negram|negararam|nego|negar|negou)") ~ "improvido",
str_detect(decisao,"\\bprovimento") ~ "provido",
str_detect(decisao,"\\bprocedente") ~ "provido",
str_detect(decisao,"(nao\\sconhec\\w+|nao\\sse\\sconhec\\w+)") ~ "não conhecido",
str_detect(decisao,"desconh\\w+") ~ "desconhecido",
str_detect(decisao,"nao\\s+conhec\\w+") ~ "desconhecido",
str_detect(decisao,"(homolog|desistencia)") ~ "desistência",
str_detect(decisao,"diligencia") ~ "conversão em diligência",
str_detect(decisao,"sobrest") ~ "sobrestado",
str_detect(decisao,"prejudicad\\w*") ~ "prejudicado",
str_detect(decisao,"(anular\\w*|nulo|nula|nulidade)") ~ "anulado",
TRUE ~ "outros"))
texto <- texto %>%
mutate(decisao = case_when(
decisao == "provido" ~ "procedente",
decisao == "improvido" ~ "improcedente",
TRUE ~ decisao
))
improcedente <- texto %>%
filter(decisao == "improcedente")
procedente <- texto %>%
filter(decisao == "procedente")
seguimento <- texto %>%
filter(decisao=="nego seguimento")
prejudicado<-texto %>%
filter(decisao=="prejudicado/extinto")
sobrestado <- texto %>%
filter(decisao=="sobrestado")
outros <- texto %>%
filter(decisao=="outros")
sucedaneo <- seguimento %>%
select(texto,docname) %>%
quanteda::corpus("docname","texto") %>%
quanteda::kwic("(?i)(suced[aâ]neo|\\bpresta\\b|atalho)",window = 20,valuetype = "regex") %>%
as_tibble()
sucedaneo<-sucedaneo %>%
filter(keyword!="presta-se") %>%
pull("docname") %>%
unique()
seguimento <- seguimento %>%
filter(!docname %in% sucedaneo)
sumula_734 <- seguimento %>%
filter(str_detect(texto,"\\b734\\b")) %>%
pull("docname") %>%
unique()
seguimento <- seguimento %>%
filter(!docname %in% sumula_734)
aderencia <- seguimento %>%
select(texto,docname) %>%
quanteda::corpus("docname","texto") %>%
quanteda::kwic("(?i)ader.ncia",window = 20,valuetype = "regex") %>%
as_tibble()
Realizado o trabalho de coleta, limpeza e organização dos dados, a etapa seguinte é conduzir a análise exploratória de dados (EDA na sigla em inglês). A análise exploratória de dados visa dar a conhecer a estrutura subjacente dos dados e expor um conjunto de informações acerca dos dados a fim de que a pesquisadora passa tomar passos adiante ou atrás no processo de análise. Igualmente, ela fornece um sumário descritivo. Segundo (Pearson 2018), a análise exploratória dos dados coletados sobre as reclamações ao STF busca responder as seguintes questões:
É importante destacar que a análise exploratória é útil para verificar a associação entre as variáveis, particularmente entre as variáveis preditoras e a variável resposta. Inclusive iremos realizar alguns testes de associação, e.g, chi-quadrado, de força dessas associações (WOE) e mesmo capacidade preditiva das variáveis explicativas. No entanto, é fundamental tomar em conta que os testes de associação e de significância, tal como o teste do chi-quadrado e o t-test, não informam nada sobre o efeito marginal de cada uma das variáveis explicativas sobre a variável resposta. Em pesquisas experimentais, isso é perfeitamente possível porque o pesquisador possui controle preciso sobre os fatores que causam ou modificam o resultado obtido. Por sua vez, as pesquisas em ciências sociais se caracterizam por serem observacionais e a pesquisadora não possui controle apriorístico sobre o efeito de uma variável sobre a outra. Ela precisa precisa considerar outros fatores que afetam o resultado para assim isolar o efeito de cada uma das variáveis explicativas sobre o resultado(Silva 2018).
Na pesquisa em tela, estamos diante de dados observacionais. O esforço é dirigido em identificar todos os possíveis fatores que influenciam a resposta judicial ao pedido. Nesse sentido, os testes de associação bivariados são inadequados porque irão superdimensionar o efeito de uma variável sobre a outra. A tarefa, a qual será executada na próxima seção, será de isolar o efeito de cada uma das variáveis explicativas sobre a variável resposta: decisão judicial. Com efeito, podemos supor que o ministro A julgará diferentemente o pedido de reclamação quando se tratar de uma alegada violação a uma súmula do STF do que quando se tratar de uma violaçã a uma decisão inter partes ou que uma reclamação contra decisão da justiça do trabalho tem maior probabilidade de ter uma resposta favorável quando o ministro é fulano do que quando este é beltrano. Esse tipo de controle somente é posssível realizar por meio das técnicas de regressão, pois o objetivo destas é justamente isolar o efeito de cada uma das variáveis sobre os resultado.
rcl_dataset <- readRDS("../data/rcl_dataset.rds")
(
descricao1 <- ExpData(rcl_dataset,1) %>%
setNames(c("Descrições","Registros"))
)
## Descrições Registros
## 1 Sample size (Nrow) 6370
## 2 No. of Variables (Ncol) 18
## 3 No. of Numeric Variables 0
## 4 No. of Factor Variables 15
## 5 No. of Text Variables 1
## 6 No. of Logical Variables 0
## 7 No. of Date Variables 2
## 8 No. of Zero variance Variables (Uniform) 0
## 9 %. of Variables having complete cases 88.89% (16)
## 10 %. of Variables having <50% missing cases 11.11% (2)
## 11 %. of Variables having >50% missing cases 0% (0)
## 12 %. of Variables having >90% missing cases 0% (0)
(
descricao2<-ExpData(rcl_dataset,2) %>%
select(-1) %>%
setNames(c("Nome da variável","Tipo de variável","% dados faltantes","No. valores únicos"))
)
## Nome da variável Tipo de variável % dados faltantes
## 1 incidente* character 0
## 2 data_andamento** Date 0
## 3 decisao* factor 0
## 4 agravo* factor 0
## 5 orgao_julgador* factor 0
## 6 novo_cpc* factor 0
## 7 adc* factor 0
## 8 adi* factor 0
## 9 adpf* factor 0
## 10 re* factor 0
## 11 sumula* factor 0
## 12 assunto* factor 0.02
## 13 segmento* factor 0
## 14 instancia* factor 0
## 15 area* factor 0.01
## 16 paradigma* factor 0
## 17 efeito_vinculante* factor 0
## 18 data_autuacao** Date 0
## No. valores únicos
## 1 5479
## 2 1109
## 3 2
## 4 2
## 5 13
## 6 2
## 7 2
## 8 2
## 9 2
## 10 2
## 11 2
## 12 9
## 13 5
## 14 3
## 15 17
## 16 4
## 17 2
## 18 2015
(
frequencias <- ExpCTable(rcl_dataset,Target="decisao",margin=1,clim=10,nlim=NULL,round=2,bin=NULL,per=T) %>%
setNames(c("Variável","Categoria","Número","decisao:improcedente","decisao:procedente","TOTAL"))
)
## Variável Categoria Número
## 1 agravo não nn
## 2 agravo sim nn
## 3 agravo TOTAL nn
## 4 agravo não %
## 5 agravo sim %
## 6 agravo TOTAL %
## 7 novo_cpc CPC/1973 nn
## 8 novo_cpc CPC/2015 nn
## 9 novo_cpc TOTAL nn
## 10 novo_cpc CPC/1973 %
## 11 novo_cpc CPC/2015 %
## 12 novo_cpc TOTAL %
## 13 adc não nn
## 14 adc sim nn
## 15 adc TOTAL nn
## 16 adc não %
## 17 adc sim %
## 18 adc TOTAL %
## 19 adi não nn
## 20 adi sim nn
## 21 adi TOTAL nn
## 22 adi não %
## 23 adi sim %
## 24 adi TOTAL %
## 25 adpf não nn
## 26 adpf sim nn
## 27 adpf TOTAL nn
## 28 adpf não %
## 29 adpf sim %
## 30 adpf TOTAL %
## 31 re não nn
## 32 re sim nn
## 33 re TOTAL nn
## 34 re não %
## 35 re sim %
## 36 re TOTAL %
## 37 sumula não nn
## 38 sumula sim nn
## 39 sumula TOTAL nn
## 40 sumula não %
## 41 sumula sim %
## 42 sumula TOTAL %
## 43 assunto CIVIL nn
## 44 assunto CIVIL E CONSUMIDOR nn
## 45 assunto CONSUMIDOR nn
## 46 assunto DIREITO DO ESTADO nn
## 47 assunto NA nn
## 48 assunto PENAL E PROCESSO PENAL nn
## 49 assunto PROCESSUAL CIVIL E DO TRABALHO nn
## 50 assunto TRABALHO nn
## 51 assunto TRABALHO E PREVIDENCIÁRIO nn
## 52 assunto TOTAL nn
## 53 assunto CIVIL %
## 54 assunto CIVIL E CONSUMIDOR %
## 55 assunto CONSUMIDOR %
## 56 assunto DIREITO DO ESTADO %
## 57 assunto NA %
## 58 assunto PENAL E PROCESSO PENAL %
## 59 assunto PROCESSUAL CIVIL E DO TRABALHO %
## 60 assunto TRABALHO %
## 61 assunto TRABALHO E PREVIDENCIÁRIO %
## 62 assunto TOTAL %
## 63 segmento eleitoral nn
## 64 segmento estadual nn
## 65 segmento federal nn
## 66 segmento stj nn
## 67 segmento trabalho nn
## 68 segmento TOTAL nn
## 69 segmento eleitoral %
## 70 segmento estadual %
## 71 segmento federal %
## 72 segmento stj %
## 73 segmento trabalho %
## 74 segmento TOTAL %
## 75 instancia primeira nn
## 76 instancia segunda nn
## 77 instancia superior nn
## 78 instancia TOTAL nn
## 79 instancia primeira %
## 80 instancia segunda %
## 81 instancia superior %
## 82 instancia TOTAL %
## 83 paradigma controle_concentrado nn
## 84 paradigma inter_partes nn
## 85 paradigma rext nn
## 86 paradigma sumula nn
## 87 paradigma TOTAL nn
## 88 paradigma controle_concentrado %
## 89 paradigma inter_partes %
## 90 paradigma rext %
## 91 paradigma sumula %
## 92 paradigma TOTAL %
## 93 efeito_vinculante nao_vinculante nn
## 94 efeito_vinculante vinculante nn
## 95 efeito_vinculante TOTAL nn
## 96 efeito_vinculante nao_vinculante %
## 97 efeito_vinculante vinculante %
## 98 efeito_vinculante TOTAL %
## decisao:improcedente decisao:procedente TOTAL
## 1 1793.00 2579.00 4372.00
## 2 1892.00 106.00 1998.00
## 3 3685.00 2685.00 6370.00
## 4 48.66 96.05 68.63
## 5 51.34 3.95 31.37
## 6 100.00 100.00 100.00
## 7 1966.00 1822.00 3788.00
## 8 1719.00 863.00 2582.00
## 9 3685.00 2685.00 6370.00
## 10 53.35 67.86 59.47
## 11 46.65 32.14 40.53
## 12 100.00 100.00 100.00
## 13 3644.00 2680.00 6324.00
## 14 41.00 5.00 46.00
## 15 3685.00 2685.00 6370.00
## 16 98.89 99.81 99.28
## 17 1.11 0.19 0.72
## 18 100.00 100.00 100.00
## 19 2506.00 1985.00 4491.00
## 20 1179.00 700.00 1879.00
## 21 3685.00 2685.00 6370.00
## 22 68.01 73.93 70.50
## 23 31.99 26.07 29.50
## 24 100.00 100.00 100.00
## 25 3489.00 2539.00 6028.00
## 26 196.00 146.00 342.00
## 27 3685.00 2685.00 6370.00
## 28 94.68 94.56 94.63
## 29 5.32 5.44 5.37
## 30 100.00 100.00 100.00
## 31 3204.00 2374.00 5578.00
## 32 481.00 311.00 792.00
## 33 3685.00 2685.00 6370.00
## 34 86.95 88.42 87.57
## 35 13.05 11.58 12.43
## 36 100.00 100.00 100.00
## 37 3044.00 2309.00 5353.00
## 38 641.00 376.00 1017.00
## 39 3685.00 2685.00 6370.00
## 40 82.61 86.00 84.03
## 41 17.39 14.00 15.97
## 42 100.00 100.00 100.00
## 43 67.00 9.00 76.00
## 44 5.00 3.00 8.00
## 45 26.00 19.00 45.00
## 46 841.00 424.00 1265.00
## 47 87.00 31.00 118.00
## 48 347.00 199.00 546.00
## 49 1449.00 1062.00 2511.00
## 50 80.00 5.00 85.00
## 51 783.00 933.00 1716.00
## 52 3685.00 2685.00 6370.00
## 53 1.82 0.34 1.19
## 54 0.14 0.11 0.13
## 55 0.71 0.71 0.71
## 56 22.82 15.79 19.86
## 57 2.36 1.15 1.85
## 58 9.42 7.41 8.57
## 59 39.32 39.55 39.42
## 60 2.17 0.19 1.33
## 61 21.25 34.75 26.94
## 62 100.00 100.00 100.00
## 63 32.00 3.00 35.00
## 64 1376.00 552.00 1928.00
## 65 377.00 223.00 600.00
## 66 153.00 40.00 193.00
## 67 1747.00 1867.00 3614.00
## 68 3685.00 2685.00 6370.00
## 69 0.87 0.11 0.55
## 70 37.34 20.56 30.27
## 71 10.23 8.31 9.42
## 72 4.15 1.49 3.03
## 73 47.41 69.53 56.73
## 74 100.00 100.00 100.00
## 75 1080.00 637.00 1717.00
## 76 1915.00 1498.00 3413.00
## 77 690.00 550.00 1240.00
## 78 3685.00 2685.00 6370.00
## 79 29.31 23.72 26.95
## 80 51.97 55.79 53.58
## 81 18.72 20.48 19.47
## 82 100.00 100.00 100.00
## 83 1255.00 738.00 1993.00
## 84 1638.00 1441.00 3079.00
## 85 286.00 218.00 504.00
## 86 506.00 288.00 794.00
## 87 3685.00 2685.00 6370.00
## 88 34.06 27.49 31.29
## 89 44.45 53.67 48.34
## 90 7.76 8.12 7.91
## 91 13.73 10.73 12.46
## 92 100.00 100.00 100.00
## 93 1638.00 1441.00 3079.00
## 94 2047.00 1244.00 3291.00
## 95 3685.00 2685.00 6370.00
## 96 44.45 53.67 48.34
## 97 55.55 46.33 51.66
## 98 100.00 100.00 100.00
Em análise de respostas binárias, duas medidas muito utilizadas nas análises para concessão de crédito, mas quase desconhecidas nas demais áreas, são o peso da evidência e o valor da informação (WOE e IV nas siglas em inglês). Essas duas medidas são importantes na fase de exploração dos dados porque elas:
WOE e IV são conceitos relacionados e foram gestados na teoria da informação a fim de medir o grau de incerteza envolvido na predição de eventos, dados os diferentes graus de conhecimento sobre as variáveis envolvidas. Em poucas palavras WOE descreve a relação entre uma variável preditiva e a variável binária alvo, no caso a decisão judicial, Por sua vez IV mede a força dessa relação.
WOE describes the relationship between a predictive variable and a binary target variable.
A tabela a seguir mostra os resultados
• Variável – nome da variável
• Decisão - Variável resposta (decisão judicial)
• classe – classe da variável
• out0 – Número de procedentes
• out1 – Número de improcedentes
• Total – Total de respostas para cada categoria
• pe_1 – procedentes / total de procedentes (em percentual)
• pe_0 – improcedentes / total de improcedentes (em percentual)
• odds – pe_1/pe_0
• woe – Peso da evidência (Weight of Evidence), calculado com o logarítimo natural de odds.
• iv – Valor da informação (Information Value) - woe * (pe_0 – pe_1)
## Variable Target Class Out_1 Out_0
## 1 agravo decisao não 2579 1793
## 2 agravo decisao sim 106 1892
## 3 novo_cpc decisao CPC/1973 1822 1966
## 4 novo_cpc decisao CPC/2015 863 1719
## 5 adc decisao não 2680 3644
## 6 adc decisao sim 5 41
## 7 adi decisao não 1985 2506
## 8 adi decisao sim 700 1179
## 9 adpf decisao não 2539 3489
## 10 adpf decisao sim 146 196
## 11 re decisao não 2374 3204
## 12 re decisao sim 311 481
## 13 sumula decisao não 2309 3044
## 14 sumula decisao sim 376 641
## 15 assunto decisao CIVIL 9 67
## 16 assunto decisao CIVIL E CONSUMIDOR 3 5
## 17 assunto decisao CONSUMIDOR 19 26
## 18 assunto decisao DIREITO DO ESTADO 424 841
## 19 assunto decisao NA 31 87
## 20 assunto decisao PENAL E PROCESSO PENAL 199 347
## 21 assunto decisao PROCESSUAL CIVIL E DO TRABALHO 1062 1449
## 22 assunto decisao TRABALHO 5 80
## 23 assunto decisao TRABALHO E PREVIDENCIÁRIO 933 783
## 24 segmento decisao eleitoral 3 32
## 25 segmento decisao estadual 552 1376
## 26 segmento decisao federal 223 377
## 27 segmento decisao stj 40 153
## 28 segmento decisao trabalho 1867 1747
## 29 instancia decisao primeira 637 1080
## 30 instancia decisao segunda 1498 1915
## 31 instancia decisao superior 550 690
## 32 paradigma decisao controle_concentrado 738 1255
## 33 paradigma decisao inter_partes 1441 1638
## 34 paradigma decisao rext 218 286
## 35 paradigma decisao sumula 288 506
## 36 efeito_vinculante decisao nao_vinculante 1441 1638
## 37 efeito_vinculante decisao vinculante 1244 2047
## TOTAL Per_1 Per_0 Odds WOE IV Ref_1 Ref_0
## 1 4372 0.961 0.487 1.973 0.680 0.322 procedente improcedente
## 2 1998 0.039 0.513 0.076 -2.577 1.221 procedente improcedente
## 3 3788 0.679 0.534 1.272 0.241 0.035 procedente improcedente
## 4 2582 0.321 0.466 0.689 -0.373 0.054 procedente improcedente
## 5 6324 0.998 0.989 1.009 0.009 0.000 procedente improcedente
## 6 46 0.002 0.011 0.182 -1.704 0.015 procedente improcedente
## 7 4491 0.739 0.680 1.087 0.083 0.005 procedente improcedente
## 8 1879 0.261 0.320 0.816 -0.203 0.012 procedente improcedente
## 9 6028 0.946 0.947 0.999 -0.001 0.000 procedente improcedente
## 10 342 0.054 0.053 1.019 0.019 0.000 procedente improcedente
## 11 5578 0.884 0.869 1.017 0.017 0.000 procedente improcedente
## 12 792 0.116 0.131 0.885 -0.122 0.002 procedente improcedente
## 13 5353 0.860 0.826 1.041 0.040 0.001 procedente improcedente
## 14 1017 0.140 0.174 0.805 -0.217 0.007 procedente improcedente
## 15 76 0.003 0.018 0.167 -1.790 0.027 procedente improcedente
## 16 8 0.001 0.001 1.000 0.000 0.000 procedente improcedente
## 17 45 0.007 0.007 1.000 0.000 0.000 procedente improcedente
## 18 1265 0.158 0.228 0.693 -0.367 0.026 procedente improcedente
## 19 118 0.012 0.024 0.500 -0.693 0.008 procedente improcedente
## 20 546 0.074 0.094 0.787 -0.240 0.005 procedente improcedente
## 21 2511 0.396 0.393 1.008 0.008 0.000 procedente improcedente
## 22 85 0.002 0.022 0.091 -2.397 0.048 procedente improcedente
## 23 1716 0.347 0.212 1.637 0.493 0.067 procedente improcedente
## 24 35 0.001 0.009 0.111 -2.198 0.018 procedente improcedente
## 25 1928 0.206 0.373 0.552 -0.594 0.099 procedente improcedente
## 26 600 0.083 0.102 0.814 -0.206 0.004 procedente improcedente
## 27 193 0.015 0.042 0.357 -1.030 0.028 procedente improcedente
## 28 3614 0.695 0.474 1.466 0.383 0.085 procedente improcedente
## 29 1717 0.237 0.293 0.809 -0.212 0.012 procedente improcedente
## 30 3413 0.558 0.520 1.073 0.070 0.003 procedente improcedente
## 31 1240 0.205 0.187 1.096 0.092 0.002 procedente improcedente
## 32 1993 0.275 0.341 0.806 -0.216 0.014 procedente improcedente
## 33 3079 0.537 0.445 1.207 0.188 0.017 procedente improcedente
## 34 504 0.081 0.078 1.038 0.037 0.000 procedente improcedente
## 35 794 0.107 0.137 0.781 -0.247 0.007 procedente improcedente
## 36 3079 0.537 0.445 1.207 0.188 0.017 procedente improcedente
## 37 3291 0.463 0.555 0.834 -0.182 0.017 procedente improcedente
Para facilitar a interpretação dos resultados, tome-se em consideração os seguintes critérios:
Se o IV é menor que 0.03 então o poder preditivo é = “Não preditivo”
Se o IV está de 0.3 para 0.1 então o poder preditivo é = “Moderadamente preditivo”
Se o IV está de 0.1 para 0.3 então o poder preditivo é = “Medianamente preditivo”
Se o IV é maior que > 0.3 então o poder preditivo é = “Altamente preditivo”
(
stat<-ExpCatStat(rcl_dataset,Target="decisao",Label="Decisões",result = "Stat",clim=15,Pclass="procedente")
)
## Variable Target Unique Chi-squared p-value df IV Value
## 1 agravo decisao 2 1618.558 0 1 1.543
## 2 orgao_julgador decisao 13 2823.568 0 12 2.803
## 3 novo_cpc decisao 2 135.015 0 1 0.089
## 4 adc decisao 2 17.324 0 1 0.015
## 5 adi decisao 2 25.925 0 1 0.017
## 6 adpf decisao 2 0.023 0.88 1 0
## 7 re decisao 2 2.95 0.086 1 0.002
## 8 sumula decisao 2 13.062 0 1 0.008
## 9 assunto decisao 9 224.957 0 7 0.181
## 10 segmento decisao 5 337.19 0 4 0.234
## 11 instancia decisao 3 24.675 0 2 0.017
## 12 paradigma decisao 4 60.246 0 3 0.038
## 13 efeito_vinculante decisao 2 52.484 0 1 0.034
## Cramers V Degree of Association Predictive Power
## 1 0.5 Strong Highly Predictive
## 2 0.67 Strong Highly Predictive
## 3 0.15 Weak Not Predictive
## 4 0.05 Very Weak Not Predictive
## 5 0.06 Very Weak Not Predictive
## 6 0 Very Weak Not Predictive
## 7 0.02 Very Weak Not Predictive
## 8 0.05 Very Weak Not Predictive
## 9 0.19 Moderate Somewhat Predictive
## 10 0.23 Moderate Medium Predictive
## 11 0.06 Very Weak Not Predictive
## 12 0.1 Weak Not Predictive
## 13 0.09 Weak Not Predictive
O gráfico abaixo mostra o fluxo dos processos tomando em conta cada uma das variáveis. Cada linha, roxa ou laranja, representa uma reclamação. A cor laranja representa o conjunto dos pedidos procedentes, a cor roxa representa o conjunto dos pedidos improcedentes. As variáveis foram ordenadas conforme a frequência com que decidem favoravelmente ou desfavoravelmete.
Da visualização, é possível observar que as decisões colegiadas, i.e. decisões dos agravos, são maiormente improcedentes. Com efeito, do total, 1884 decisões colegiadas foram improcedentes e apenas 51 foram procedentes. Uma vez que essas decisão são regularmente proferidas ante de uma irresignação contra uma decisão monocrática, é possível afirmar com tranquilidade nesse caso, e não precisaríamos de qualquer teste estatístico para concluir isso, que as decisões colegiadas assumem papel nitidamente homologatório das decisões monocráticas.
Por outro lado, os ministros Alexandre de Moraes, Gilmar Mendes e Marco Aurélio lideram entre aqueles que mais concedem pedidos. Houve mais concessões após o CPC 2015 e a justiça do trabalho é aparentemente a mais resistente. Por sua vez, as reclamações contra supostas violações de súmulas não são tão bem sucedidas quanto as reclamações contra supostas violações de recursos extraordinários e decisões interpartes.
knitr::include_graphics("https://apps.consudata.com.br/shiny/gg_alluvial.png")